package com.yykj.tencent.im.server.service;

import com.yykj.tencent.im.server.bean.request.*;
import com.yykj.tencent.im.server.bean.response.*;
import com.yykj.tencent.im.server.exception.TimException;
import com.yykj.tencent.im.server.form.AddGroupMemberForm;
import com.yykj.tencent.im.server.form.DeleteGroupMemberForm;

import java.io.IOException;

/**
 * 群组管理
 */
public interface GroupService {
    /**
     * 获取 App 中的所有群组
     */
     GetAppidGroupListResult getAppIdGroupList(GetAppidGroupListRequest getAppidGroupListRequest) throws TimException, IOException;

    /**
     * 创建群组
     */
     CreateGroupResult createGroup(CreateGroupRequest createGroupRequest) throws TimException;

    /**
     * 获取群详细资料
     */
     GetGroupInfoResult getGroupInfo(GetGroupInfoRequest getGroupInfoRequest) throws TimException;


    /**
     * 获取群成员详细资料
     */
     GetGroupMemberInfoResult getGroupMemberInfo(GetGroupMemberInfoRequest getGroupMemberInfoRequest);

    /**
     * 修改群基础资料
     */
     ModifyGroupBaseInfoResult modifyGroupBaseInfo(ModifyGroupBaseInfoRequest modifyGroupBaseInfoRequest);

    /**
     * 增加群成员
     */
     AddGroupMemberResult addGroupMember(AddGroupMemberForm addGroupMemberForm);

    /**
     * 删除群成员
     */
     DeleteGroupMemberResult deleteGroupMember(DeleteGroupMemberForm deleteGroupMemberForm);

    /**
     * 修改群成员资料
     */
     ModifyGroupMemberInfoResult modifyGroupMemberInfo(ModifyGroupMemberInfoRequest modifyGroupMemberInfoRequest);


    /**
     * 解散群组
     */
     DestroyGroupResult destroyGroup(DestroyGroupRequest destroyGroupRequest);


    /**
     * 获取用户所加入的群组
     */
     GetJoinGroupListResult getJoinGroupList(GetJoinedGroupListRequest getJoinedGroupListRequest);

    /**
     * 查询用户在群组中的身份
     */
     GetRoleInGroupResult getRoleInGroup(GetRoleInGroupRequest getRoleInGroupRequest);

    /**
     * 批量禁言和取消禁言
     */
     ForbidSendMsgResult forbidSendMsg(ForbidSendMsgRequest forbidSendMsgRequest);

    /**
     * 获取被禁言群成员列表
     */
     GetGroupShuttedUinResult getGroupShuttedUin(GetGroupShuttedUinRequest getGroupShuttedUinRequest);


    /**
     * 在群组中发送普通消息
     */
     SendGroupMsgResult sendGroupMsg(SendGroupMsgRequest sendGroupMsgRequest);

    /**
     * 在群组中发送系统消息
     */
     SendGroupSystemNotificationResult sendGroupSystemNotification(SendGroupSystemNotificationRequest sendGroupSystemNotificationRequest);

    /**
     * 转让群主
     */
     ChangeGroupOwnerResult changeGroupOwner(ChangeGroupOwnerRequest changeGroupOwnerRequest);


    /**
     * 撤回群消息
     */
     GroupMsgRecallResult groupMsgRecall(GroupMsgRecallRequest groupMsgRecallRequest);

    /**
     * 导入群基础资料
     */
     ImportGroupResult importGroup(ImportGroupRequest importGroupRequest);

    /**
     * 导入群消息
     */
     ImportGroupMsgResult importGroupMsg(ImportGroupMsgRequest importGroupMsgRequest);

    /**
     * 导入群成员
     */
     ImportGroupMemberResult importGroupMember(ImportGroupMemberRequest importGroupMemberRequest);

    /**
     * 设置成员未读消息计数
     */
     SetUnreadMsgNumResult setUnreadMsgNum(SetUnreadMsgNumRequest setUnreadMsgNumRequest);

    /**
     * 撤回指定用户发送的消息
     */
     DeleteGroupMsgBySenderResult deleteGroupMsgBySender(DeleteGroupMsgBySenderRequest deleteGroupMsgBySenderRequest);

    /**
     * 拉取群成员
     */
     GroupMsgGetSimpleResult groupMsgGetSimple(GroupMsgGetSimpleRequest groupMsgGetSimpleRequest);

    /**
     * 获取直播群在线人数
     */
     GetOnlineMemberNumResult getOnlineMemberNum(GetOnlineMemberNumRequest getOnlineMemberNumRequest);



}
